#ifndef TelefonModeli_h__
#define TelefonModeli_h__

#include "Pozisyon.h"

// VTK
#include <vtkSmartPointer.h>
#include <vtkNew.h>
#include <vtkVersion.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkOBJReader.h>

/** 
 * \class TelefonModeli
 * \ingroup Gosterim
 * \brief Yorungedeki her pozisyon'da gosterilecek 3B telefon model.
 * \author Mehmet Yigitsoy
 * \date $Date: 2013/01/20 16:53:00 $
 */
class TelefonModeli
{
public:

	TelefonModeli(const char* objModelDosyaIsmi, const Pozisyon& pozisyon);

	/**
	 * \brief 
	 * \returns 
	 **/
	~TelefonModeli(){};


	/**
	 * \brief Objenin render edilebilmesi icin aktorunun vtkRenderer'a eklenmesi gerekiyor.
	 * \returns vtkSmartPointer<vtkActor>
	 **/
	vtkSmartPointer<vtkActor> Actor() const { return m_actor; };


private:
	vtkSmartPointer<vtkPolyData>			m_polydata;					///< Mapper'a verilecek polydata.
	vtkSmartPointer<vtkPolyDataMapper>		m_mapper;					///< Noktalari ozellik arayacak mapper.
	vtkSmartPointer<vtkActor>				m_actor;					///< Renderer'da polydata'yi temsil edecek aktor.
	vtkSmartPointer<vtkOBJReader> 			m_reader;					///< OBJ modeli okuyucusu.
};

typedef TelefonModeli* TelefonModeliPtr;

#endif // TelefonModeli_h__